package com.zmn.oms.zmn.business.interfaces.redistribute;

import com.zmn.oms.common.exception.OmsBaseException;
import com.zmn.oms.model.bo.work.redistribute.RedistributeBO;
import com.zmn.oms.model.entity.redistribute.OrderWorkRedistributeApply;
import com.zmn.oms.model.entity.redistribute.OrderWorkRedistributeInfo;
import com.zmn.oms.model.entity.work.OrderWork;
import org.springframework.scheduling.annotation.Async;

/**
 * 类描述: 工单改派业务实现接口
 *
 * @author: HuangChao
 * @since: 2022/05/09 14:00
 */
public interface OrderWorkRedistributeBService {

    /**
     * 改派操作-指定
     * @param redistributeBO
     */
    @Async
    void redistribute(RedistributeBO redistributeBO);

    /**
     * 自动改派-系统
     * @param redistributeBO
     * @throws OmsBaseException
     */
    @Async
    void autoRedistribute(RedistributeBO redistributeBO);

    /**
     * 驳回改派
     * @param redistributeBO
     */
    @Async
    void redistributeReject(RedistributeBO redistributeBO);

    /**
     * 推送改派结果信息
     *
     * @param orderWorkRedistributeApply
     * @param orderWork
     * @param failCause
     */
    void pushRedistributeResultAppMsg(OrderWorkRedistributeApply orderWorkRedistributeApply, OrderWorkRedistributeInfo info, OrderWork orderWork, String failCause);
}